package com.eboss.sbs.activity;

import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;

import com.eboss.sbs.R;
import com.eboss.sbs.activity.base.BaseActivity;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;

import java.util.Hashtable;

public class BarcodeShowActivity extends BaseActivity {

	private ImageView img_barcode;
	private String title;
	private String barcodeStr;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		mActivity = this;
		setContentView(R.layout.activity_barcode_show);
		super.onCreate(savedInstanceState);
		initView();
	}
	
	private void initView(){
		title = getIntent().getStringExtra("title");
		barcodeStr = getIntent().getStringExtra("barcodeStr");
		
		showView(R.id.titleback_btn_back, true);
		setTvText(R.id.tv_title, title);
		
		img_barcode = (ImageView) findViewById(R.id.img_barcode);
		
		createQRImage(img_barcode, barcodeStr);
		
		findViewById(R.id.titleback_btn_back).setOnClickListener(this);
		
	}
	
	@Override
	public void onClick(View v) {
		switch (v.getId()) {
			case R.id.titleback_btn_back:
				finish();
				break;
	
			default:break;
		}
		super.onClick(v);
	}
	
    public void createQRImage(ImageView imgview, String content)
    {
    	int QR_WIDTH = 400;
    	int QR_HEIGHT = 400;
        try
        {
            //判断URL合法性
            if (content == null || "".equals(content) || content.length() < 1){return;}
            Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();
            hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
            //图像数据转换，使用了矩阵转换
            BitMatrix bitMatrix = new QRCodeWriter().encode(content, BarcodeFormat.QR_CODE, QR_WIDTH, QR_HEIGHT, hints);
            int[] pixels = new int[QR_WIDTH * QR_HEIGHT];
            //下面这里按照二维码的算法，逐个生成二维码的图片，
            //两个for循环是图片横列扫描的结果
            for (int y = 0; y < QR_HEIGHT; y++){
                for (int x = 0; x < QR_WIDTH; x++){
                    if (bitMatrix.get(x, y)){pixels[y * QR_WIDTH + x] = 0xff000000;}
                    else{pixels[y * QR_WIDTH + x] = 0xffffffff;}
                }
            }
            //生成二维码图片的格式，使用ARGB_8888
            Bitmap bitmap = Bitmap.createBitmap(QR_WIDTH, QR_HEIGHT, Bitmap.Config.ARGB_8888);
            bitmap.setPixels(pixels, 0, QR_WIDTH, 0, 0, QR_WIDTH, QR_HEIGHT);
            //显示到一个ImageView上面
            imgview.setImageBitmap(bitmap);
        }
        catch (WriterException e){e.printStackTrace();}
    }
}
